/**
在 React 应用中， `redux` 、 `react-redux`  和  `redux-thunk`  是三个常用的库，它们各自有不同的作用和功能。
  1. Redux
  - 作用：Redux 是一个状态管理库，用于管理 JavaScript 应用程序中的状态。它提供了一个集中式的存储（store），使得应用的状态更加可预测和可维护。
  - 核心概念：
    - Store：保存应用的状态。
    - Action：描述状态变化的对象，通常包含一个  `type`  属性。
    - Reducer：纯函数，接收当前状态和动作，返回新的状态。
  - 特点：
    - 单一状态树：整个应用的状态存储在一个对象中。
    - 不可变状态：状态是只读的，不能直接修改，而是通过派发动作来改变。

  2. React-Redux
  - 作用：React-Redux 是一个官方的 Redux 绑定库，用于将 Redux 与 React 结合起来。它提供了将 Redux store 连接到 React 组件的功能。
  - 核心概念：
    - Provider：将 Redux store 提供给 React 组件树，使得所有子组件都可以访问到 store。
    - connect：用于将 Redux 的状态和动作映射到 React 组件的 props 中，使组件能够访问和更新状态。
  - 特点：
    - 简化组件与 Redux 的交互，提供了一种优雅的方式来管理组件的状态。

  3. Redux-Thunk
  - 作用：Redux-Thunk 是一个中间件，用于处理 Redux 中的异步操作。它允许你在 action 创建函数中返回一个函数，而不是一个普通的 action 对象。
  - 核心概念：
    - Thunk：一个函数，它接收  `dispatch`  和  `getState`  作为参数，可以在内部执行异步操作（如 API 请求），然后根据结果派发相应的动作。
  - 特点：
    - 使得处理异步操作变得简单，可以在 action 创建函数中编写异步代码。
    - 与 Redux 结合使用时，可以轻松管理异步请求的状态（如加载状态、成功或失败等）。

  4. 总结
  - Redux 是状态管理的核心库，负责管理应用的状态。
  - React-Redux 是将 Redux 与 React 结合的库，使得在 React 组件中使用 Redux 变得简单和高效。
  - Redux-Thunk 是一个中间件，用于处理 Redux 中的异步操作，允许在 action 创建函数中编写异步代码。

  通过这三个库的结合使用，开发者可以高效地管理 React 应用中的状态，处理异步操作，从而构建可维护和可扩展的应用。
 */
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
import { Provider } from 'react-redux'
import store from './store'

/**
 * redux安装: npm install redux react-redux
 * react-redux 和 redux-thunk 和 redux
 */

const root = ReactDOM.createRoot(document.getElementById('root'))
root.render(
  // <React.StrictMode>
    <Provider store={store}>
      <App />
    </Provider>
  // </React.StrictMode>
)